Documents may generally be categorized as being either structured or unstructured. Unstructured documents represent the contents of the documents as a linear sequence of characters. These characters include the content of the document as well as control characters that specify formatting information regarding the document. A structured document, in contrast, is not ordered as a linear representation but typically is organized as a tree structure or other type of directed acyclic graph. For example, a document may be represented as a tree with a document node at the top having child nodes representing the front and back portions of the document. The front and back portions of the document may include sections, paragraphs and the like. These components are all organized as a hierarchical tree. Each structured document may be specified in a structured document language, such as the extensible markup language (XML) or the Standard Generalized Mark-up Language (SGML), or may be specified in accordance a known standard, such as the Office Document Architecture (ODA) standard.
For users, the editing of unstructured documents is fairly intuitive and straightforward. The user simply selects a portion of the document to be edited and then applies an editing operation to the selected portion. With structured documents, editing is not as straightforward. Structured document editors require that the user operate on the syntactic entities (e.g. section, paragraph, etc.) specified within the structured document. As a result, editing operations may be cumbersome. Often times, it is not possible in a single operation to edit a portion of the document that spans the boundaries of syntactic entities.